/**
 * @file analyser.h
 * @author Florian Castellane <florian.castellane@grenoble-inp.org>
 * @author Christian Proust <christian.proust@phelma.grenoble-inp.fr>
 * @date Wed Sep 26 14:33:00 2012
 * @brief En-tête des fonctions d'analyse de texte.
 *
 */

#include <stdio.h>
#include "gestiondetypes.h"

#ifndef ANALYSER_H_INCLUDED
#define ANALYSER_H_INCLUDED




// Définition des états
enum
{
    STATUT_INIT,
    STATUT_SYMBOLE,
    STATUT_VERIF
} ;

LISTE decoupe_ligne_lexeme(char* ligne_arg, LISTE liste_de_lexemes_arg);
LISTE classifie_liste_lexeme(LISTE liste_de_lexemes);
TYPE_DE_LEXEME classifie_lexeme(char* lexeme);



/////////////////////////////////////////////////////

void canoniser_ligne(char* texte);
/*IMPORTANT : s'assurer que le texte ait un emplacement memoire reserve de
taille 3 fois plus grande que le texte se terminant par le premier '\\0'

La fonction canonniser prend un tableau de caractere et lui effectue les
operations suivantes :
	- en cas de tabulation : remplace par une espace ;
	- en cas de ',' ')' '(' '+' '-' on s'assure qu'il y ait un espace
avant et apres ;
	- en cas d'espace multiple, on les supprime ;
	- en cas de ':' on retire tous les espaces précédentes, et on 
s'assure qu'il y ait une espace ensuite.

Puis elle renvoie le tableau canonise.

*/
void supprimer_caractere_tableau(char * tableau, int offset);
/*IMPORTANT : il doit exister un caractere '\\0' alloue en memoire.

Cette fonction ecrase la valeur de la chaine de caractere a l'emplacement
offset puis elle deplace caractere par caractere l'ensemble du tableau vers
la gauche.

*/

void ajouter_caractere_tableau(char* tableau,int offset,char caractere);
/*IMPORTANT : s'assurer que le texte ait un emplacement memoire reserve de
taille plus grande que le texte se terminant par le premier '\\0'

Cette fonction insere un caractere dans le tableau.
*/

void decaler_caractere_vers_droite(char* tableau,int offset);
/*IMPORTANT : s'assurer qu'il y ait un emplacement reserve en memoire apres le prochain '\\0'.

Cette fonction deplace caractere par caractere par caractere l'ensemble du
tableau vers la droite jusqu'au caractere '\\0'.
*/



#endif // ANALYSER_H_INCLUDED
